package org.example.demo3.dto;

import lombok.Data;
import org.example.demo3.enums.StatusCodeEnum;

@Data
public class ResponseDTO<T> {
    private Integer code;       // 状态码
    private String msg;         // 消息
    private T data;            // 数据

    // 静态方法，用于创建一个成功的响应对象
    public static <T> ResponseDTO<T> success(T data) {
        ResponseDTO<T> response = new ResponseDTO<>(); // 创建一个新的ResponseDTO对象
        response.setCode(StatusCodeEnum.SUCCESS.getCode()); // 设置状态码为成功状态码
        response.setMsg(StatusCodeEnum.SUCCESS.getMsg()); // 设置消息为成功消息
        response.setData(data); // 设置数据
        return response; // 返回创建的响应对象
    }

    // 静态方法，用于创建一个错误的响应对象
    public static <T> ResponseDTO<T> error(StatusCodeEnum statusCode) {
        ResponseDTO<T> response = new ResponseDTO<>(); // 创建一个新的ResponseDTO对象
        response.setCode(statusCode.getCode()); // 设置状态码为传入的状态码
        response.setMsg(statusCode.getMsg()); // 设置消息为传入的状态码对应的消息
        return response; // 返回创建的响应对象
    }

    // 添加一个带自定义消息的错误方法
    public static <T> ResponseDTO<T> error(StatusCodeEnum statusCode, String message) {
        ResponseDTO<T> response = new ResponseDTO<>();
        response.setCode(statusCode.getCode());
        response.setMsg(message);
        return response;
    }
}